tg-me.com/golangtests/777
Last Update:
🧠 Хитрая задача на Go (v1.22+) — алгоритмы, циклы и подвох в логике
📌 Задача: "Подряд идущие квадраты"
Дано: массив из N положительных целых чисел []int
, например:
[]int{1, 4, 9, 16, 25, 36, 50, 64, 81}
Нужно найти максимальную длину подмассива, где все элементы — квадраты подряд идущих натуральных чисел.
Например,
[4, 9, 16, 25]
— это квадраты 2², 3², 4², 5² → длина = 4 [50, 64]
— не подходят, так как 50 не является точным квадратом.🎯 Формат функции:
func MaxConsecutiveSquares(nums []int) int
✅ Пример:
input := []int{1, 4, 9, 16, 25, 36, 50, 64, 81}
fmt.Println(MaxConsecutiveSquares(input)) // 👉 6
🧩 Подвох:
- Часто пытаются сравнивать разности или применять хэшмапы — но это ошибка
- Нужно восстановить корни чисел (`sqrt`) и убедиться, что они натуральные и идут подряд
- Важно использовать math.Sqrt и быть осторожным с плавающей точкой (`float64`)
- Также важно не выходить за границы slice
💡 Подсказка:
`
import "math"
func isSquare(n int) (int, bool) {
root := int(math.Sqrt(float64(n)))
return root, root*root == n
}
```
🛠 **Что проверяет задача:**
• Умение работать с нецелыми корнями
• Алгоритмы "двойного указателя" (две границы окна)
• Понимание строгой проверки на натуральные числа
• Внимание к float64-погрешности и типам
BY Go tests
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/golangtests/777